1 /* 2 * This file is part of gtkD. 3 * 4 * gtkD is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU Lesser General Public License 6 * as published by the Free Software Foundation; either version 3 7 * of the License, or (at your option) any later version, with 8 * some exceptions, please read the COPYING file. 9 * 10 * gtkD is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU Lesser General Public License for more details. 14 * 15 * You should have received a copy of the GNU Lesser General Public License 16 * along with gtkD; if not, write to the Free Software 17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA 18 */ 19 20 // generated automatically - do not change 21 // find conversion definition on APILookup.txt 22 // implement new conversion functionalities on the wrap.utils pakage 23 24 25 module pango.c.types; 26 27 public import cairo.c.types; 28 public import glib.c.types; 29 public import gobject.c.types; 30 public import harfbuzz.c.types; 31 32 alias void* FTLibrary; 33 34 /** 35 * A `PangoGlyph` represents a single glyph in the output form of a string. 36 */ 37 public alias uint PangoGlyph; 38 39 /** 40 * The `PangoGlyphUnit` type is used to store dimensions within 41 * Pango. 42 * 43 * Dimensions are stored in 1/PANGO_SCALE of a device unit. 44 * (A device unit might be a pixel for screen display, or 45 * a point on a printer.) PANGO_SCALE is currently 1024, and 46 * may change in the future (unlikely though), but you should not 47 * depend on its exact value. 48 * 49 * The PANGO_PIXELS() macro can be used to convert from glyph units 50 * into device units with correct rounding. 51 */ 52 public alias int PangoGlyphUnit; 53 54 /** 55 * A `PangoLayoutRun` represents a single run within a `PangoLayoutLine`. 56 * 57 * It is simply an alternate name for [struct@Pango.GlyphItem]. 58 * See the [struct@Pango.GlyphItem] docs for details on the fields. 59 */ 60 public alias PangoGlyphItem PangoLayoutRun; 61 62 /** 63 * `PangoAlignment` describes how to align the lines of a `PangoLayout` 64 * within the available space. 65 * 66 * If the `PangoLayout` is set to justify using [method@Pango.Layout.set_justify], 67 * this only affects partial lines. 68 * 69 * See [method@Pango.Layout.set_auto_dir] for how text direction affects 70 * the interpretation of `PangoAlignment` values. 71 */ 72 public enum PangoAlignment 73 { 74 /** 75 * Put all available space on the right 76 */ 77 LEFT = 0, 78 /** 79 * Center the line within the available space 80 */ 81 CENTER = 1, 82 /** 83 * Put all available space on the left 84 */ 85 RIGHT = 2, 86 } 87 88 /** 89 * The `PangoAttrType` distinguishes between different types of attributes. 90 * 91 * Along with the predefined values, it is possible to allocate additional 92 * values for custom attributes using [func@AttrType.register]. The predefined 93 * values are given below. The type of structure used to store the attribute is 94 * listed in parentheses after the description. 95 */ 96 public enum PangoAttrType 97 { 98 /** 99 * does not happen 100 */ 101 INVALID = 0, 102 /** 103 * language ([struct@Pango.AttrLanguage]) 104 */ 105 LANGUAGE = 1, 106 /** 107 * font family name list ([struct@Pango.AttrString]) 108 */ 109 FAMILY = 2, 110 /** 111 * font slant style ([struct@Pango.AttrInt]) 112 */ 113 STYLE = 3, 114 /** 115 * font weight ([struct@Pango.AttrInt]) 116 */ 117 WEIGHT = 4, 118 /** 119 * font variant (normal or small caps) ([struct@Pango.AttrInt]) 120 */ 121 VARIANT = 5, 122 /** 123 * font stretch ([struct@Pango.AttrInt]) 124 */ 125 STRETCH = 6, 126 /** 127 * font size in points scaled by %PANGO_SCALE ([struct@Pango.AttrInt]) 128 */ 129 SIZE = 7, 130 /** 131 * font description ([struct@Pango.AttrFontDesc]) 132 */ 133 FONT_DESC = 8, 134 /** 135 * foreground color ([struct@Pango.AttrColor]) 136 */ 137 FOREGROUND = 9, 138 /** 139 * background color ([struct@Pango.AttrColor]) 140 */ 141 BACKGROUND = 10, 142 /** 143 * whether the text has an underline ([struct@Pango.AttrInt]) 144 */ 145 UNDERLINE = 11, 146 /** 147 * whether the text is struck-through ([struct@Pango.AttrInt]) 148 */ 149 STRIKETHROUGH = 12, 150 /** 151 * baseline displacement ([struct@Pango.AttrInt]) 152 */ 153 RISE = 13, 154 /** 155 * shape ([struct@Pango.AttrShape]) 156 */ 157 SHAPE = 14, 158 /** 159 * font size scale factor ([struct@Pango.AttrFloat]) 160 */ 161 SCALE = 15, 162 /** 163 * whether fallback is enabled ([struct@Pango.AttrInt]) 164 */ 165 FALLBACK = 16, 166 /** 167 * letter spacing ([struct@PangoAttrInt]) 168 */ 169 LETTER_SPACING = 17, 170 /** 171 * underline color ([struct@Pango.AttrColor]) 172 */ 173 UNDERLINE_COLOR = 18, 174 /** 175 * strikethrough color ([struct@Pango.AttrColor]) 176 */ 177 STRIKETHROUGH_COLOR = 19, 178 /** 179 * font size in pixels scaled by %PANGO_SCALE ([struct@Pango.AttrInt]) 180 */ 181 ABSOLUTE_SIZE = 20, 182 /** 183 * base text gravity ([struct@Pango.AttrInt]) 184 */ 185 GRAVITY = 21, 186 /** 187 * gravity hint ([struct@Pango.AttrInt]) 188 */ 189 GRAVITY_HINT = 22, 190 /** 191 * OpenType font features ([struct@Pango.AttrFontFeatures]). Since 1.38 192 */ 193 FONT_FEATURES = 23, 194 /** 195 * foreground alpha ([struct@Pango.AttrInt]). Since 1.38 196 */ 197 FOREGROUND_ALPHA = 24, 198 /** 199 * background alpha ([struct@Pango.AttrInt]). Since 1.38 200 */ 201 BACKGROUND_ALPHA = 25, 202 /** 203 * whether breaks are allowed ([struct@Pango.AttrInt]). Since 1.44 204 */ 205 ALLOW_BREAKS = 26, 206 /** 207 * how to render invisible characters ([struct@Pango.AttrInt]). Since 1.44 208 */ 209 SHOW = 27, 210 /** 211 * whether to insert hyphens at intra-word line breaks ([struct@Pango.AttrInt]). Since 1.44 212 */ 213 INSERT_HYPHENS = 28, 214 /** 215 * whether the text has an overline ([struct@Pango.AttrInt]). Since 1.46 216 */ 217 OVERLINE = 29, 218 /** 219 * overline color ([struct@Pango.AttrColor]). Since 1.46 220 */ 221 OVERLINE_COLOR = 30, 222 /** 223 * line height factor ([struct@Pango.AttrFloat]). Since: 1.50 224 */ 225 LINE_HEIGHT = 31, 226 /** 227 * line height ([struct@Pango.AttrInt]). Since: 1.50 228 */ 229 ABSOLUTE_LINE_HEIGHT = 32, 230 TEXT_TRANSFORM = 33, 231 /** 232 * override segmentation to classify the range of the attribute as a single word ([struct@Pango.AttrInt]). Since 1.50 233 */ 234 WORD = 34, 235 /** 236 * override segmentation to classify the range of the attribute as a single sentence ([struct@Pango.AttrInt]). Since 1.50 237 */ 238 SENTENCE = 35, 239 /** 240 * baseline displacement ([struct@Pango.AttrInt]). Since 1.50 241 */ 242 BASELINE_SHIFT = 36, 243 /** 244 * font-relative size change ([struct@Pango.AttrInt]). Since 1.50 245 */ 246 FONT_SCALE = 37, 247 } 248 249 /** 250 * An enumeration that affects baseline shifts between runs. 251 * 252 * Since: 1.50 253 */ 254 public enum PangoBaselineShift 255 { 256 /** 257 * Leave the baseline unchanged 258 */ 259 NONE = 0, 260 /** 261 * Shift the baseline to the superscript position, 262 * relative to the previous run 263 */ 264 SUPERSCRIPT = 1, 265 /** 266 * Shift the baseline to the subscript position, 267 * relative to the previous run 268 */ 269 SUBSCRIPT = 2, 270 } 271 272 /** 273 * `PangoBidiType` represents the bidirectional character 274 * type of a Unicode character. 275 * 276 * The values in this enumeration are specified by the 277 * [Unicode bidirectional algorithm](http://www.unicode.org/reports/tr9/). 278 * 279 * Deprecated: Use fribidi for this information 280 * 281 * Since: 1.22 282 */ 283 public enum PangoBidiType 284 { 285 /** 286 * Left-to-Right 287 */ 288 L = 0, 289 /** 290 * Left-to-Right Embedding 291 */ 292 LRE = 1, 293 /** 294 * Left-to-Right Override 295 */ 296 LRO = 2, 297 /** 298 * Right-to-Left 299 */ 300 R = 3, 301 /** 302 * Right-to-Left Arabic 303 */ 304 AL = 4, 305 /** 306 * Right-to-Left Embedding 307 */ 308 RLE = 5, 309 /** 310 * Right-to-Left Override 311 */ 312 RLO = 6, 313 /** 314 * Pop Directional Format 315 */ 316 PDF = 7, 317 /** 318 * European Number 319 */ 320 EN = 8, 321 /** 322 * European Number Separator 323 */ 324 ES = 9, 325 /** 326 * European Number Terminator 327 */ 328 ET = 10, 329 /** 330 * Arabic Number 331 */ 332 AN = 11, 333 /** 334 * Common Number Separator 335 */ 336 CS = 12, 337 /** 338 * Nonspacing Mark 339 */ 340 NSM = 13, 341 /** 342 * Boundary Neutral 343 */ 344 BN = 14, 345 /** 346 * Paragraph Separator 347 */ 348 B = 15, 349 /** 350 * Segment Separator 351 */ 352 S = 16, 353 /** 354 * Whitespace 355 */ 356 WS = 17, 357 /** 358 * Other Neutrals 359 */ 360 ON = 18, 361 /** 362 * Left-to-Right isolate. Since 1.48.6 363 */ 364 LRI = 19, 365 /** 366 * Right-to-Left isolate. Since 1.48.6 367 */ 368 RLI = 20, 369 /** 370 * First strong isolate. Since 1.48.6 371 */ 372 FSI = 21, 373 /** 374 * Pop directional isolate. Since 1.48.6 375 */ 376 PDI = 22, 377 } 378 379 /** 380 * `PangoCoverageLevel` is used to indicate how well a font can 381 * represent a particular Unicode character for a particular script. 382 * 383 * Since 1.44, only %PANGO_COVERAGE_NONE and %PANGO_COVERAGE_EXACT 384 * will be returned. 385 */ 386 public enum PangoCoverageLevel 387 { 388 /** 389 * The character is not representable with 390 * the font. 391 */ 392 NONE = 0, 393 /** 394 * The character is represented in a 395 * way that may be comprehensible but is not the correct 396 * graphical form. For instance, a Hangul character represented 397 * as a a sequence of Jamos, or a Latin transliteration of a 398 * Cyrillic word. 399 */ 400 FALLBACK = 1, 401 /** 402 * The character is represented as 403 * basically the correct graphical form, but with a stylistic 404 * variant inappropriate for the current script. 405 */ 406 APPROXIMATE = 2, 407 /** 408 * The character is represented as the 409 * correct graphical form. 410 */ 411 EXACT = 3, 412 } 413 414 /** 415 * `PangoDirection` represents a direction in the Unicode bidirectional 416 * algorithm. 417 * 418 * Not every value in this enumeration makes sense for every usage of 419 * `PangoDirection`; for example, the return value of [func@unichar_direction] 420 * and [func@find_base_dir] cannot be `PANGO_DIRECTION_WEAK_LTR` or 421 * `PANGO_DIRECTION_WEAK_RTL`, since every character is either neutral 422 * or has a strong direction; on the other hand `PANGO_DIRECTION_NEUTRAL` 423 * doesn't make sense to pass to [func@itemize_with_base_dir]. 424 * 425 * The `PANGO_DIRECTION_TTB_LTR`, `PANGO_DIRECTION_TTB_RTL` values come from 426 * an earlier interpretation of this enumeration as the writing direction 427 * of a block of text and are no longer used. See `PangoGravity` for how 428 * vertical text is handled in Pango. 429 * 430 * If you are interested in text direction, you should really use fribidi 431 * directly. `PangoDirection` is only retained because it is used in some 432 * public apis. 433 */ 434 public enum PangoDirection 435 { 436 /** 437 * A strong left-to-right direction 438 */ 439 LTR = 0, 440 /** 441 * A strong right-to-left direction 442 */ 443 RTL = 1, 444 /** 445 * Deprecated value; treated the 446 * same as `PANGO_DIRECTION_RTL`. 447 */ 448 TTB_LTR = 2, 449 /** 450 * Deprecated value; treated the 451 * same as `PANGO_DIRECTION_LTR` 452 */ 453 TTB_RTL = 3, 454 /** 455 * A weak left-to-right direction 456 */ 457 WEAK_LTR = 4, 458 /** 459 * A weak right-to-left direction 460 */ 461 WEAK_RTL = 5, 462 /** 463 * No direction specified 464 */ 465 NEUTRAL = 6, 466 } 467 468 /** 469 * `PangoEllipsizeMode` describes what sort of ellipsization 470 * should be applied to text. 471 * 472 * In the ellipsization process characters are removed from the 473 * text in order to make it fit to a given width and replaced 474 * with an ellipsis. 475 */ 476 public enum PangoEllipsizeMode 477 { 478 /** 479 * No ellipsization 480 */ 481 NONE = 0, 482 /** 483 * Omit characters at the start of the text 484 */ 485 START = 1, 486 /** 487 * Omit characters in the middle of the text 488 */ 489 MIDDLE = 2, 490 /** 491 * Omit characters at the end of the text 492 */ 493 END = 3, 494 } 495 496 /** 497 * The bits in a `PangoFontMask` correspond to the set fields in a 498 * `PangoFontDescription`. 499 */ 500 public enum PangoFontMask 501 { 502 /** 503 * the font family is specified. 504 */ 505 FAMILY = 1, 506 /** 507 * the font style is specified. 508 */ 509 STYLE = 2, 510 /** 511 * the font variant is specified. 512 */ 513 VARIANT = 4, 514 /** 515 * the font weight is specified. 516 */ 517 WEIGHT = 8, 518 /** 519 * the font stretch is specified. 520 */ 521 STRETCH = 16, 522 /** 523 * the font size is specified. 524 */ 525 SIZE = 32, 526 /** 527 * the font gravity is specified (Since: 1.16.) 528 */ 529 GRAVITY = 64, 530 /** 531 * OpenType font variations are specified (Since: 1.42) 532 */ 533 VARIATIONS = 128, 534 } 535 536 /** 537 * An enumeration that affects font sizes for superscript 538 * and subscript positioning and for (emulated) Small Caps. 539 * 540 * Since: 1.50 541 */ 542 public enum PangoFontScale 543 { 544 /** 545 * Leave the font size unchanged 546 */ 547 NONE = 0, 548 /** 549 * Change the font to a size suitable for superscripts 550 */ 551 SUPERSCRIPT = 1, 552 /** 553 * Change the font to a size suitable for subscripts 554 */ 555 SUBSCRIPT = 2, 556 /** 557 * Change the font to a size suitable for Small Caps 558 */ 559 SMALL_CAPS = 3, 560 } 561 562 /** 563 * `PangoGravity` represents the orientation of glyphs in a segment 564 * of text. 565 * 566 * This is useful when rendering vertical text layouts. In those situations, 567 * the layout is rotated using a non-identity [struct@Pango.Matrix], and then 568 * glyph orientation is controlled using `PangoGravity`. 569 * 570 * Not every value in this enumeration makes sense for every usage of 571 * `PangoGravity`; for example, %PANGO_GRAVITY_AUTO only can be passed to 572 * [method@Pango.Context.set_base_gravity] and can only be returned by 573 * [method@Pango.Context.get_base_gravity]. 574 * 575 * See also: [enum@Pango.GravityHint] 576 * 577 * Since: 1.16 578 */ 579 public enum PangoGravity 580 { 581 /** 582 * Glyphs stand upright (default) <img align="right" valign="center" src="m-south.png"> 583 */ 584 SOUTH = 0, 585 /** 586 * Glyphs are rotated 90 degrees counter-clockwise. <img align="right" valign="center" src="m-east.png"> 587 */ 588 EAST = 1, 589 /** 590 * Glyphs are upside-down. <img align="right" valign="cener" src="m-north.png"> 591 */ 592 NORTH = 2, 593 /** 594 * Glyphs are rotated 90 degrees clockwise. <img align="right" valign="center" src="m-west.png"> 595 */ 596 WEST = 3, 597 /** 598 * Gravity is resolved from the context matrix 599 */ 600 AUTO = 4, 601 } 602 603 /** 604 * `PangoGravityHint` defines how horizontal scripts should behave in a 605 * vertical context. 606 * 607 * That is, English excerpts in a vertical paragraph for example. 608 * 609 * See also [enum@Pango.Gravity] 610 * 611 * Since: 1.16 612 */ 613 public enum PangoGravityHint 614 { 615 /** 616 * scripts will take their natural gravity based 617 * on the base gravity and the script. This is the default. 618 */ 619 NATURAL = 0, 620 /** 621 * always use the base gravity set, regardless of 622 * the script. 623 */ 624 STRONG = 1, 625 /** 626 * for scripts not in their natural direction (eg. 627 * Latin in East gravity), choose per-script gravity such that every script 628 * respects the line progression. This means, Latin and Arabic will take 629 * opposite gravities and both flow top-to-bottom for example. 630 */ 631 LINE = 2, 632 } 633 634 /** 635 * Errors that can be returned by [func@Pango.Layout.deserialize]. 636 * 637 * Since: 1.50 638 */ 639 public enum PangoLayoutDeserializeError 640 { 641 /** 642 * Unspecified error 643 */ 644 INVALID = 0, 645 /** 646 * A JSon value could not be 647 * interpreted 648 */ 649 INVALID_VALUE = 1, 650 /** 651 * A required JSon member was 652 * not found 653 */ 654 MISSING_VALUE = 2, 655 } 656 657 /** 658 * Flags that influence the behavior of [func@Pango.Layout.deserialize]. 659 * 660 * New members may be added to this enumeration over time. 661 * 662 * Since: 1.50 663 */ 664 public enum PangoLayoutDeserializeFlags 665 { 666 /** 667 * Default behavior 668 */ 669 DEFAULT = 0, 670 /** 671 * Apply context information 672 * from the serialization to the `PangoContext` 673 */ 674 CONTEXT = 1, 675 } 676 677 /** 678 * Flags that influence the behavior of [method@Pango.Layout.serialize]. 679 * 680 * New members may be added to this enumeration over time. 681 * 682 * Since: 1.50 683 */ 684 public enum PangoLayoutSerializeFlags 685 { 686 /** 687 * Default behavior 688 */ 689 DEFAULT = 0, 690 /** 691 * Include context information 692 */ 693 CONTEXT = 1, 694 /** 695 * Include information about the formatted output 696 */ 697 OUTPUT = 2, 698 } 699 700 /** 701 * The `PangoOverline` enumeration is used to specify whether text 702 * should be overlined, and if so, the type of line. 703 * 704 * Since: 1.46 705 */ 706 public enum PangoOverline 707 { 708 /** 709 * no overline should be drawn 710 */ 711 NONE = 0, 712 /** 713 * Draw a single line above the ink 714 * extents of the text being underlined. 715 */ 716 SINGLE = 1, 717 } 718 719 /** 720 * `PangoRenderPart` defines different items to render for such 721 * purposes as setting colors. 722 * 723 * Since: 1.8 724 */ 725 public enum PangoRenderPart 726 { 727 /** 728 * the text itself 729 */ 730 FOREGROUND = 0, 731 /** 732 * the area behind the text 733 */ 734 BACKGROUND = 1, 735 /** 736 * underlines 737 */ 738 UNDERLINE = 2, 739 /** 740 * strikethrough lines 741 */ 742 STRIKETHROUGH = 3, 743 /** 744 * overlines 745 */ 746 OVERLINE = 4, 747 } 748 749 /** 750 * The `PangoScript` enumeration identifies different writing 751 * systems. 752 * 753 * The values correspond to the names as defined in the Unicode standard. See 754 * [Unicode Standard Annex 24: Script names](http://www.unicode.org/reports/tr24/) 755 * 756 * Note that this enumeration is deprecated and will not be updated to include values 757 * in newer versions of the Unicode standard. Applications should use the 758 * [enum@GLib.UnicodeScript] enumeration instead, 759 * whose values are interchangeable with `PangoScript`. 760 */ 761 public enum PangoScript 762 { 763 /** 764 * a value never returned from pango_script_for_unichar() 765 */ 766 INVALID_CODE = -1, 767 /** 768 * a character used by multiple different scripts 769 */ 770 COMMON = 0, 771 /** 772 * a mark glyph that takes its script from the 773 * base glyph to which it is attached 774 */ 775 INHERITED = 1, 776 /** 777 * Arabic 778 */ 779 ARABIC = 2, 780 /** 781 * Armenian 782 */ 783 ARMENIAN = 3, 784 /** 785 * Bengali 786 */ 787 BENGALI = 4, 788 /** 789 * Bopomofo 790 */ 791 BOPOMOFO = 5, 792 /** 793 * Cherokee 794 */ 795 CHEROKEE = 6, 796 /** 797 * Coptic 798 */ 799 COPTIC = 7, 800 /** 801 * Cyrillic 802 */ 803 CYRILLIC = 8, 804 /** 805 * Deseret 806 */ 807 DESERET = 9, 808 /** 809 * Devanagari 810 */ 811 DEVANAGARI = 10, 812 /** 813 * Ethiopic 814 */ 815 ETHIOPIC = 11, 816 /** 817 * Georgian 818 */ 819 GEORGIAN = 12, 820 /** 821 * Gothic 822 */ 823 GOTHIC = 13, 824 /** 825 * Greek 826 */ 827 GREEK = 14, 828 /** 829 * Gujarati 830 */ 831 GUJARATI = 15, 832 /** 833 * Gurmukhi 834 */ 835 GURMUKHI = 16, 836 /** 837 * Han 838 */ 839 HAN = 17, 840 /** 841 * Hangul 842 */ 843 HANGUL = 18, 844 /** 845 * Hebrew 846 */ 847 HEBREW = 19, 848 /** 849 * Hiragana 850 */ 851 HIRAGANA = 20, 852 /** 853 * Kannada 854 */ 855 KANNADA = 21, 856 /** 857 * Katakana 858 */ 859 KATAKANA = 22, 860 /** 861 * Khmer 862 */ 863 KHMER = 23, 864 /** 865 * Lao 866 */ 867 LAO = 24, 868 /** 869 * Latin 870 */ 871 LATIN = 25, 872 /** 873 * Malayalam 874 */ 875 MALAYALAM = 26, 876 /** 877 * Mongolian 878 */ 879 MONGOLIAN = 27, 880 /** 881 * Myanmar 882 */ 883 MYANMAR = 28, 884 /** 885 * Ogham 886 */ 887 OGHAM = 29, 888 /** 889 * Old Italic 890 */ 891 OLD_ITALIC = 30, 892 /** 893 * Oriya 894 */ 895 ORIYA = 31, 896 /** 897 * Runic 898 */ 899 RUNIC = 32, 900 /** 901 * Sinhala 902 */ 903 SINHALA = 33, 904 /** 905 * Syriac 906 */ 907 SYRIAC = 34, 908 /** 909 * Tamil 910 */ 911 TAMIL = 35, 912 /** 913 * Telugu 914 */ 915 TELUGU = 36, 916 /** 917 * Thaana 918 */ 919 THAANA = 37, 920 /** 921 * Thai 922 */ 923 THAI = 38, 924 /** 925 * Tibetan 926 */ 927 TIBETAN = 39, 928 /** 929 * Canadian Aboriginal 930 */ 931 CANADIAN_ABORIGINAL = 40, 932 /** 933 * Yi 934 */ 935 YI = 41, 936 /** 937 * Tagalog 938 */ 939 TAGALOG = 42, 940 /** 941 * Hanunoo 942 */ 943 HANUNOO = 43, 944 /** 945 * Buhid 946 */ 947 BUHID = 44, 948 /** 949 * Tagbanwa 950 */ 951 TAGBANWA = 45, 952 /** 953 * Braille 954 */ 955 BRAILLE = 46, 956 /** 957 * Cypriot 958 */ 959 CYPRIOT = 47, 960 /** 961 * Limbu 962 */ 963 LIMBU = 48, 964 /** 965 * Osmanya 966 */ 967 OSMANYA = 49, 968 /** 969 * Shavian 970 */ 971 SHAVIAN = 50, 972 /** 973 * Linear B 974 */ 975 LINEAR_B = 51, 976 /** 977 * Tai Le 978 */ 979 TAI_LE = 52, 980 /** 981 * Ugaritic 982 */ 983 UGARITIC = 53, 984 /** 985 * New Tai Lue. Since 1.10 986 */ 987 NEW_TAI_LUE = 54, 988 /** 989 * Buginese. Since 1.10 990 */ 991 BUGINESE = 55, 992 /** 993 * Glagolitic. Since 1.10 994 */ 995 GLAGOLITIC = 56, 996 /** 997 * Tifinagh. Since 1.10 998 */ 999 TIFINAGH = 57, 1000 /** 1001 * Syloti Nagri. Since 1.10 1002 */ 1003 SYLOTI_NAGRI = 58, 1004 /** 1005 * Old Persian. Since 1.10 1006 */ 1007 OLD_PERSIAN = 59, 1008 /** 1009 * Kharoshthi. Since 1.10 1010 */ 1011 KHAROSHTHI = 60, 1012 /** 1013 * an unassigned code point. Since 1.14 1014 */ 1015 UNKNOWN = 61, 1016 /** 1017 * Balinese. Since 1.14 1018 */ 1019 BALINESE = 62, 1020 /** 1021 * Cuneiform. Since 1.14 1022 */ 1023 CUNEIFORM = 63, 1024 /** 1025 * Phoenician. Since 1.14 1026 */ 1027 PHOENICIAN = 64, 1028 /** 1029 * Phags-pa. Since 1.14 1030 */ 1031 PHAGS_PA = 65, 1032 /** 1033 * N'Ko. Since 1.14 1034 */ 1035 NKO = 66, 1036 /** 1037 * Kayah Li. Since 1.20.1 1038 */ 1039 KAYAH_LI = 67, 1040 /** 1041 * Lepcha. Since 1.20.1 1042 */ 1043 LEPCHA = 68, 1044 /** 1045 * Rejang. Since 1.20.1 1046 */ 1047 REJANG = 69, 1048 /** 1049 * Sundanese. Since 1.20.1 1050 */ 1051 SUNDANESE = 70, 1052 /** 1053 * Saurashtra. Since 1.20.1 1054 */ 1055 SAURASHTRA = 71, 1056 /** 1057 * Cham. Since 1.20.1 1058 */ 1059 CHAM = 72, 1060 /** 1061 * Ol Chiki. Since 1.20.1 1062 */ 1063 OL_CHIKI = 73, 1064 /** 1065 * Vai. Since 1.20.1 1066 */ 1067 VAI = 74, 1068 /** 1069 * Carian. Since 1.20.1 1070 */ 1071 CARIAN = 75, 1072 /** 1073 * Lycian. Since 1.20.1 1074 */ 1075 LYCIAN = 76, 1076 /** 1077 * Lydian. Since 1.20.1 1078 */ 1079 LYDIAN = 77, 1080 /** 1081 * Batak. Since 1.32 1082 */ 1083 BATAK = 78, 1084 /** 1085 * Brahmi. Since 1.32 1086 */ 1087 BRAHMI = 79, 1088 /** 1089 * Mandaic. Since 1.32 1090 */ 1091 MANDAIC = 80, 1092 /** 1093 * Chakma. Since: 1.32 1094 */ 1095 CHAKMA = 81, 1096 /** 1097 * Meroitic Cursive. Since: 1.32 1098 */ 1099 MEROITIC_CURSIVE = 82, 1100 /** 1101 * Meroitic Hieroglyphs. Since: 1.32 1102 */ 1103 MEROITIC_HIEROGLYPHS = 83, 1104 /** 1105 * Miao. Since: 1.32 1106 */ 1107 MIAO = 84, 1108 /** 1109 * Sharada. Since: 1.32 1110 */ 1111 SHARADA = 85, 1112 /** 1113 * Sora Sompeng. Since: 1.32 1114 */ 1115 SORA_SOMPENG = 86, 1116 /** 1117 * Takri. Since: 1.32 1118 */ 1119 TAKRI = 87, 1120 /** 1121 * Bassa. Since: 1.40 1122 */ 1123 BASSA_VAH = 88, 1124 /** 1125 * Caucasian Albanian. Since: 1.40 1126 */ 1127 CAUCASIAN_ALBANIAN = 89, 1128 /** 1129 * Duployan. Since: 1.40 1130 */ 1131 DUPLOYAN = 90, 1132 /** 1133 * Elbasan. Since: 1.40 1134 */ 1135 ELBASAN = 91, 1136 /** 1137 * Grantha. Since: 1.40 1138 */ 1139 GRANTHA = 92, 1140 /** 1141 * Kjohki. Since: 1.40 1142 */ 1143 KHOJKI = 93, 1144 /** 1145 * Khudawadi, Sindhi. Since: 1.40 1146 */ 1147 KHUDAWADI = 94, 1148 /** 1149 * Linear A. Since: 1.40 1150 */ 1151 LINEAR_A = 95, 1152 /** 1153 * Mahajani. Since: 1.40 1154 */ 1155 MAHAJANI = 96, 1156 /** 1157 * Manichaean. Since: 1.40 1158 */ 1159 MANICHAEAN = 97, 1160 /** 1161 * Mende Kikakui. Since: 1.40 1162 */ 1163 MENDE_KIKAKUI = 98, 1164 /** 1165 * Modi. Since: 1.40 1166 */ 1167 MODI = 99, 1168 /** 1169 * Mro. Since: 1.40 1170 */ 1171 MRO = 100, 1172 /** 1173 * Nabataean. Since: 1.40 1174 */ 1175 NABATAEAN = 101, 1176 /** 1177 * Old North Arabian. Since: 1.40 1178 */ 1179 OLD_NORTH_ARABIAN = 102, 1180 /** 1181 * Old Permic. Since: 1.40 1182 */ 1183 OLD_PERMIC = 103, 1184 /** 1185 * Pahawh Hmong. Since: 1.40 1186 */ 1187 PAHAWH_HMONG = 104, 1188 /** 1189 * Palmyrene. Since: 1.40 1190 */ 1191 PALMYRENE = 105, 1192 /** 1193 * Pau Cin Hau. Since: 1.40 1194 */ 1195 PAU_CIN_HAU = 106, 1196 /** 1197 * Psalter Pahlavi. Since: 1.40 1198 */ 1199 PSALTER_PAHLAVI = 107, 1200 /** 1201 * Siddham. Since: 1.40 1202 */ 1203 SIDDHAM = 108, 1204 /** 1205 * Tirhuta. Since: 1.40 1206 */ 1207 TIRHUTA = 109, 1208 /** 1209 * Warang Citi. Since: 1.40 1210 */ 1211 WARANG_CITI = 110, 1212 /** 1213 * Ahom. Since: 1.40 1214 */ 1215 AHOM = 111, 1216 /** 1217 * Anatolian Hieroglyphs. Since: 1.40 1218 */ 1219 ANATOLIAN_HIEROGLYPHS = 112, 1220 /** 1221 * Hatran. Since: 1.40 1222 */ 1223 HATRAN = 113, 1224 /** 1225 * Multani. Since: 1.40 1226 */ 1227 MULTANI = 114, 1228 /** 1229 * Old Hungarian. Since: 1.40 1230 */ 1231 OLD_HUNGARIAN = 115, 1232 /** 1233 * Signwriting. Since: 1.40 1234 */ 1235 SIGNWRITING = 116, 1236 } 1237 1238 /** 1239 * Flags influencing the shaping process. 1240 * 1241 * `PangoShapeFlags` can be passed to [func@Pango.shape_with_flags]. 1242 * 1243 * Since: 1.44 1244 */ 1245 public enum PangoShapeFlags 1246 { 1247 /** 1248 * Default value 1249 */ 1250 NONE = 0, 1251 /** 1252 * Round glyph positions and widths to whole device units 1253 * This option should be set if the target renderer can't do subpixel positioning of glyphs 1254 */ 1255 ROUND_POSITIONS = 1, 1256 } 1257 1258 /** 1259 * These flags affect how Pango treats characters that are normally 1260 * not visible in the output. 1261 * 1262 * Since: 1.44 1263 */ 1264 public enum PangoShowFlags 1265 { 1266 /** 1267 * No special treatment for invisible characters 1268 */ 1269 NONE = 0, 1270 /** 1271 * Render spaces, tabs and newlines visibly 1272 */ 1273 SPACES = 1, 1274 /** 1275 * Render line breaks visibly 1276 */ 1277 LINE_BREAKS = 2, 1278 /** 1279 * Render default-ignorable Unicode 1280 * characters visibly 1281 */ 1282 IGNORABLES = 4, 1283 } 1284 1285 /** 1286 * An enumeration specifying the width of the font relative to other designs 1287 * within a family. 1288 */ 1289 public enum PangoStretch 1290 { 1291 /** 1292 * ultra condensed width 1293 */ 1294 ULTRA_CONDENSED = 0, 1295 /** 1296 * extra condensed width 1297 */ 1298 EXTRA_CONDENSED = 1, 1299 /** 1300 * condensed width 1301 */ 1302 CONDENSED = 2, 1303 /** 1304 * semi condensed width 1305 */ 1306 SEMI_CONDENSED = 3, 1307 /** 1308 * the normal width 1309 */ 1310 NORMAL = 4, 1311 /** 1312 * semi expanded width 1313 */ 1314 SEMI_EXPANDED = 5, 1315 /** 1316 * expanded width 1317 */ 1318 EXPANDED = 6, 1319 /** 1320 * extra expanded width 1321 */ 1322 EXTRA_EXPANDED = 7, 1323 /** 1324 * ultra expanded width 1325 */ 1326 ULTRA_EXPANDED = 8, 1327 } 1328 1329 /** 1330 * An enumeration specifying the various slant styles possible for a font. 1331 */ 1332 public enum PangoStyle 1333 { 1334 /** 1335 * the font is upright. 1336 */ 1337 NORMAL = 0, 1338 /** 1339 * the font is slanted, but in a roman style. 1340 */ 1341 OBLIQUE = 1, 1342 /** 1343 * the font is slanted in an italic style. 1344 */ 1345 ITALIC = 2, 1346 } 1347 1348 /** 1349 * `PangoTabAlign` specifies where the text appears relative to the tab stop 1350 * position. 1351 */ 1352 public enum PangoTabAlign 1353 { 1354 /** 1355 * the text appears to the right of the tab stop position 1356 */ 1357 LEFT = 0, 1358 /** 1359 * the text appears to the left of the tab stop position 1360 * until the available space is filled. Since: 1.50 1361 */ 1362 RIGHT = 1, 1363 /** 1364 * the text is centered at the tab stop position 1365 * until the available space is filled. Since: 1.50 1366 */ 1367 CENTER = 2, 1368 /** 1369 * text before the first occurrence of the decimal point 1370 * character appears to the left of the tab stop position (until the available 1371 * space is filled), the rest to the right. Since: 1.50 1372 */ 1373 DECIMAL = 3, 1374 } 1375 1376 /** 1377 * An enumeration that affects how Pango treats characters during shaping. 1378 * 1379 * Since: 1.50 1380 */ 1381 public enum PangoTextTransform 1382 { 1383 /** 1384 * Leave text unchanged 1385 */ 1386 NONE = 0, 1387 /** 1388 * Display letters and numbers as lowercase 1389 */ 1390 LOWERCASE = 1, 1391 /** 1392 * Display letters and numbers as uppercase 1393 */ 1394 UPPERCASE = 2, 1395 /** 1396 * Display the first character of a word 1397 * in titlecase 1398 */ 1399 CAPITALIZE = 3, 1400 } 1401 1402 /** 1403 * The `PangoUnderline` enumeration is used to specify whether text 1404 * should be underlined, and if so, the type of underlining. 1405 */ 1406 public enum PangoUnderline 1407 { 1408 /** 1409 * no underline should be drawn 1410 */ 1411 NONE = 0, 1412 /** 1413 * a single underline should be drawn 1414 */ 1415 SINGLE = 1, 1416 /** 1417 * a double underline should be drawn 1418 */ 1419 DOUBLE = 2, 1420 /** 1421 * a single underline should be drawn at a 1422 * position beneath the ink extents of the text being 1423 * underlined. This should be used only for underlining 1424 * single characters, such as for keyboard accelerators. 1425 * %PANGO_UNDERLINE_SINGLE should be used for extended 1426 * portions of text. 1427 */ 1428 LOW = 3, 1429 /** 1430 * an underline indicating an error should 1431 * be drawn below. The exact style of rendering is up to the 1432 * `PangoRenderer` in use, but typical styles include wavy 1433 * or dotted lines. 1434 * This underline is typically used to indicate an error such 1435 * as a possible mispelling; in some cases a contrasting color 1436 * may automatically be used. This type of underlining is 1437 * available since Pango 1.4. 1438 */ 1439 ERROR = 4, 1440 /** 1441 * Like @PANGO_UNDERLINE_SINGLE, but 1442 * drawn continuously across multiple runs. This type 1443 * of underlining is available since Pango 1.46. 1444 */ 1445 SINGLE_LINE = 5, 1446 /** 1447 * Like @PANGO_UNDERLINE_DOUBLE, but 1448 * drawn continuously across multiple runs. This type 1449 * of underlining is available since Pango 1.46. 1450 */ 1451 DOUBLE_LINE = 6, 1452 /** 1453 * Like @PANGO_UNDERLINE_ERROR, but 1454 * drawn continuously across multiple runs. This type 1455 * of underlining is available since Pango 1.46. 1456 */ 1457 ERROR_LINE = 7, 1458 } 1459 1460 /** 1461 * An enumeration specifying capitalization variant of the font. 1462 */ 1463 public enum PangoVariant 1464 { 1465 /** 1466 * A normal font. 1467 */ 1468 NORMAL = 0, 1469 /** 1470 * A font with the lower case characters 1471 * replaced by smaller variants of the capital characters. 1472 */ 1473 SMALL_CAPS = 1, 1474 /** 1475 * A font with all characters 1476 * replaced by smaller variants of the capital characters. Since: 1.50 1477 */ 1478 ALL_SMALL_CAPS = 2, 1479 /** 1480 * A font with the lower case characters 1481 * replaced by smaller variants of the capital characters. 1482 * Petite Caps can be even smaller than Small Caps. Since: 1.50 1483 */ 1484 PETITE_CAPS = 3, 1485 /** 1486 * A font with all characters 1487 * replaced by smaller variants of the capital characters. 1488 * Petite Caps can be even smaller than Small Caps. Since: 1.50 1489 */ 1490 ALL_PETITE_CAPS = 4, 1491 /** 1492 * A font with the upper case characters 1493 * replaced by smaller variants of the capital letters. Since: 1.50 1494 */ 1495 UNICASE = 5, 1496 /** 1497 * A font with capital letters that 1498 * are more suitable for all-uppercase titles. Since: 1.50 1499 */ 1500 TITLE_CAPS = 6, 1501 } 1502 1503 /** 1504 * An enumeration specifying the weight (boldness) of a font. 1505 * 1506 * Weight is specified as a numeric value ranging from 100 to 1000. 1507 * This enumeration simply provides some common, predefined values. 1508 */ 1509 public enum PangoWeight 1510 { 1511 /** 1512 * the thin weight (= 100) Since: 1.24 1513 */ 1514 THIN = 100, 1515 /** 1516 * the ultralight weight (= 200) 1517 */ 1518 ULTRALIGHT = 200, 1519 /** 1520 * the light weight (= 300) 1521 */ 1522 LIGHT = 300, 1523 /** 1524 * the semilight weight (= 350) Since: 1.36.7 1525 */ 1526 SEMILIGHT = 350, 1527 /** 1528 * the book weight (= 380) Since: 1.24) 1529 */ 1530 BOOK = 380, 1531 /** 1532 * the default weight (= 400) 1533 */ 1534 NORMAL = 400, 1535 /** 1536 * the normal weight (= 500) Since: 1.24 1537 */ 1538 MEDIUM = 500, 1539 /** 1540 * the semibold weight (= 600) 1541 */ 1542 SEMIBOLD = 600, 1543 /** 1544 * the bold weight (= 700) 1545 */ 1546 BOLD = 700, 1547 /** 1548 * the ultrabold weight (= 800) 1549 */ 1550 ULTRABOLD = 800, 1551 /** 1552 * the heavy weight (= 900) 1553 */ 1554 HEAVY = 900, 1555 /** 1556 * the ultraheavy weight (= 1000) Since: 1.24 1557 */ 1558 ULTRAHEAVY = 1000, 1559 } 1560 1561 /** 1562 * `PangoWrapMode` describes how to wrap the lines of a `PangoLayout` 1563 * to the desired width. 1564 * 1565 * For @PANGO_WRAP_WORD, Pango uses break opportunities that are determined 1566 * by the Unicode line breaking algorithm. For @PANGO_WRAP_CHAR, Pango allows 1567 * breaking at grapheme boundaries that are determined by the Unicode text 1568 * segmentation algorithm. 1569 */ 1570 public enum PangoWrapMode 1571 { 1572 /** 1573 * wrap lines at word boundaries. 1574 */ 1575 WORD = 0, 1576 /** 1577 * wrap lines at character boundaries. 1578 */ 1579 CHAR = 1, 1580 /** 1581 * wrap lines at word boundaries, but fall back to 1582 * character boundaries if there is not enough space for a full word. 1583 */ 1584 WORD_CHAR = 2, 1585 } 1586 1587 struct PangoFcFontMap 1588 { 1589 PangoFontMap parentInstance; 1590 void* priv; 1591 } 1592 1593 struct PangoCairoFont; 1594 1595 1596 /** 1597 * The `PangoAnalysis` structure stores information about 1598 * the properties of a segment of text. 1599 */ 1600 struct PangoAnalysis 1601 { 1602 /** 1603 * unused, reserved 1604 */ 1605 void* shapeEngine; 1606 /** 1607 * unused, reserved 1608 */ 1609 void* langEngine; 1610 /** 1611 * the font for this segment. 1612 */ 1613 PangoFont* font; 1614 /** 1615 * the bidirectional level for this segment. 1616 */ 1617 ubyte level; 1618 /** 1619 * the glyph orientation for this segment (A `PangoGravity`). 1620 */ 1621 ubyte gravity; 1622 /** 1623 * boolean flags for this segment (Since: 1.16). 1624 */ 1625 ubyte flags; 1626 /** 1627 * the detected script for this segment (A `PangoScript`) (Since: 1.18). 1628 */ 1629 ubyte script; 1630 /** 1631 * the detected language for this segment. 1632 */ 1633 PangoLanguage* language; 1634 /** 1635 * extra attributes for this segment. 1636 */ 1637 GSList* extraAttrs; 1638 } 1639 1640 /** 1641 * The `PangoAttrClass` structure stores the type and operations for 1642 * a particular type of attribute. 1643 * 1644 * The functions in this structure should not be called directly. Instead, 1645 * one should use the wrapper functions provided for `PangoAttribute`. 1646 */ 1647 struct PangoAttrClass 1648 { 1649 /** 1650 * the type ID for this attribute 1651 */ 1652 PangoAttrType type; 1653 /** */ 1654 extern(C) PangoAttribute* function(PangoAttribute* attr) copy; 1655 /** */ 1656 extern(C) void function(PangoAttribute* attr) destroy; 1657 /** */ 1658 extern(C) int function(PangoAttribute* attr1, PangoAttribute* attr2) equal; 1659 } 1660 1661 /** 1662 * The `PangoAttrColor` structure is used to represent attributes that 1663 * are colors. 1664 */ 1665 struct PangoAttrColor 1666 { 1667 /** 1668 * the common portion of the attribute 1669 */ 1670 PangoAttribute attr; 1671 /** 1672 * the `PangoColor` which is the value of the attribute 1673 */ 1674 PangoColor color; 1675 } 1676 1677 /** 1678 * The `PangoAttrFloat` structure is used to represent attributes with 1679 * a float or double value. 1680 */ 1681 struct PangoAttrFloat 1682 { 1683 /** 1684 * the common portion of the attribute 1685 */ 1686 PangoAttribute attr; 1687 /** 1688 * the value of the attribute 1689 */ 1690 double value; 1691 } 1692 1693 /** 1694 * The `PangoAttrFontDesc` structure is used to store an attribute that 1695 * sets all aspects of the font description at once. 1696 */ 1697 struct PangoAttrFontDesc 1698 { 1699 /** 1700 * the common portion of the attribute 1701 */ 1702 PangoAttribute attr; 1703 /** 1704 * the font description which is the value of this attribute 1705 */ 1706 PangoFontDescription* desc; 1707 } 1708 1709 /** 1710 * The `PangoAttrFontFeatures` structure is used to represent OpenType 1711 * font features as an attribute. 1712 * 1713 * Since: 1.38 1714 */ 1715 struct PangoAttrFontFeatures 1716 { 1717 /** 1718 * the common portion of the attribute 1719 */ 1720 PangoAttribute attr; 1721 /** 1722 * the features, as a string in CSS syntax 1723 */ 1724 char* features; 1725 } 1726 1727 /** 1728 * The `PangoAttrInt` structure is used to represent attributes with 1729 * an integer or enumeration value. 1730 */ 1731 struct PangoAttrInt 1732 { 1733 /** 1734 * the common portion of the attribute 1735 */ 1736 PangoAttribute attr; 1737 /** 1738 * the value of the attribute 1739 */ 1740 int value; 1741 } 1742 1743 struct PangoAttrIterator; 1744 1745 /** 1746 * The `PangoAttrLanguage` structure is used to represent attributes that 1747 * are languages. 1748 */ 1749 struct PangoAttrLanguage 1750 { 1751 /** 1752 * the common portion of the attribute 1753 */ 1754 PangoAttribute attr; 1755 /** 1756 * the `PangoLanguage` which is the value of the attribute 1757 */ 1758 PangoLanguage* value; 1759 } 1760 1761 struct PangoAttrList; 1762 1763 /** 1764 * The `PangoAttrShape` structure is used to represent attributes which 1765 * impose shape restrictions. 1766 */ 1767 struct PangoAttrShape 1768 { 1769 /** 1770 * the common portion of the attribute 1771 */ 1772 PangoAttribute attr; 1773 /** 1774 * the ink rectangle to restrict to 1775 */ 1776 PangoRectangle inkRect; 1777 /** 1778 * the logical rectangle to restrict to 1779 */ 1780 PangoRectangle logicalRect; 1781 /** 1782 * user data set (see [func@Pango.AttrShape.new_with_data]) 1783 */ 1784 void* data; 1785 /** 1786 * copy function for the user data 1787 */ 1788 PangoAttrDataCopyFunc copyFunc; 1789 /** 1790 * destroy function for the user data 1791 */ 1792 GDestroyNotify destroyFunc; 1793 } 1794 1795 /** 1796 * The `PangoAttrSize` structure is used to represent attributes which 1797 * set font size. 1798 */ 1799 struct PangoAttrSize 1800 { 1801 /** 1802 * the common portion of the attribute 1803 */ 1804 PangoAttribute attr; 1805 /** 1806 * size of font, in units of 1/%PANGO_SCALE of a point (for 1807 * %PANGO_ATTR_SIZE) or of a device unit (for %PANGO_ATTR_ABSOLUTE_SIZE) 1808 */ 1809 int size; 1810 import std.bitmanip: bitfields; 1811 mixin(bitfields!( 1812 uint, "absolute", 1, 1813 uint, "", 31 1814 )); 1815 } 1816 1817 /** 1818 * The `PangoAttrString` structure is used to represent attributes with 1819 * a string value. 1820 */ 1821 struct PangoAttrString 1822 { 1823 /** 1824 * the common portion of the attribute 1825 */ 1826 PangoAttribute attr; 1827 /** 1828 * the string which is the value of the attribute 1829 */ 1830 char* value; 1831 } 1832 1833 struct PangoAttribute 1834 { 1835 /** 1836 * the class structure holding information about the type of the attribute 1837 */ 1838 PangoAttrClass* klass; 1839 /** 1840 * the start index of the range (in bytes). 1841 */ 1842 uint startIndex; 1843 /** 1844 * end index of the range (in bytes). The character at this index 1845 * is not included in the range. 1846 */ 1847 uint endIndex; 1848 } 1849 1850 struct PangoColor 1851 { 1852 /** 1853 * value of red component 1854 */ 1855 ushort red; 1856 /** 1857 * value of green component 1858 */ 1859 ushort green; 1860 /** 1861 * value of blue component 1862 */ 1863 ushort blue; 1864 } 1865 1866 struct PangoContext; 1867 1868 struct PangoContextClass; 1869 1870 struct PangoCoverage; 1871 1872 struct PangoFont 1873 { 1874 GObject parentInstance; 1875 } 1876 1877 struct PangoFontClass 1878 { 1879 GObjectClass parentClass; 1880 /** 1881 * 1882 * Params: 1883 * font = a `PangoFont` 1884 * Returns: a newly-allocated `PangoFontDescription` object. 1885 */ 1886 extern(C) PangoFontDescription* function(PangoFont* font) describe; 1887 /** 1888 * 1889 * Params: 1890 * font = a `PangoFont` 1891 * language = the language tag 1892 * Returns: a newly-allocated `PangoCoverage` 1893 * object. 1894 */ 1895 extern(C) PangoCoverage* function(PangoFont* font, PangoLanguage* language) getCoverage; 1896 /** */ 1897 extern(C) void function(PangoFont* font, PangoGlyph glyph, PangoRectangle* inkRect, PangoRectangle* logicalRect) getGlyphExtents; 1898 /** 1899 * 1900 * Params: 1901 * font = a `PangoFont` 1902 * language = language tag used to determine which script 1903 * to get the metrics for, or %NULL to indicate to get the metrics for 1904 * the entire font. 1905 * Returns: a `PangoFontMetrics` object. The caller must call 1906 * [method@Pango.FontMetrics.unref] when finished using the object. 1907 */ 1908 extern(C) PangoFontMetrics* function(PangoFont* font, PangoLanguage* language) getMetrics; 1909 /** 1910 * 1911 * Params: 1912 * font = a `PangoFont` 1913 * Returns: the `PangoFontMap` 1914 * for the font 1915 */ 1916 extern(C) PangoFontMap* function(PangoFont* font) getFontMap; 1917 /** */ 1918 extern(C) PangoFontDescription* function(PangoFont* font) describeAbsolute; 1919 /** */ 1920 extern(C) void function(PangoFont* font, hb_feature_t* features, uint len, uint* numFeatures) getFeatures; 1921 /** */ 1922 extern(C) hb_font_t* function(PangoFont* font) createHbFont; 1923 } 1924 1925 struct PangoFontDescription; 1926 1927 struct PangoFontFace 1928 { 1929 GObject parentInstance; 1930 } 1931 1932 struct PangoFontFaceClass 1933 { 1934 GObjectClass parentClass; 1935 /** 1936 * 1937 * Params: 1938 * face = a `PangoFontFace`. 1939 * Returns: the face name for the face. This string is 1940 * owned by the face object and must not be modified or freed. 1941 */ 1942 extern(C) const(char)* function(PangoFontFace* face) getFaceName; 1943 /** 1944 * 1945 * Params: 1946 * face = a `PangoFontFace` 1947 * Returns: a newly-created `PangoFontDescription` structure 1948 * holding the description of the face. Use [method@Pango.FontDescription.free] 1949 * to free the result. 1950 */ 1951 extern(C) PangoFontDescription* function(PangoFontFace* face) describe; 1952 /** */ 1953 extern(C) void function(PangoFontFace* face, int** sizes, int* nSizes) listSizes; 1954 /** 1955 * 1956 * Params: 1957 * face = a `PangoFontFace` 1958 * Returns: whether @face is synthesized 1959 */ 1960 extern(C) int function(PangoFontFace* face) isSynthesized; 1961 /** 1962 * 1963 * Params: 1964 * face = a `PangoFontFace` 1965 * Returns: the `PangoFontFamily` 1966 */ 1967 extern(C) PangoFontFamily* function(PangoFontFace* face) getFamily; 1968 /** */ 1969 extern(C) void function() PangoReserved3; 1970 /** */ 1971 extern(C) void function() PangoReserved4; 1972 } 1973 1974 struct PangoFontFamily 1975 { 1976 GObject parentInstance; 1977 } 1978 1979 struct PangoFontFamilyClass 1980 { 1981 GObjectClass parentClass; 1982 /** */ 1983 extern(C) void function(PangoFontFamily* family, PangoFontFace*** faces, int* nFaces) listFaces; 1984 /** 1985 * 1986 * Params: 1987 * family = a `PangoFontFamily` 1988 * Returns: the name of the family. This string is owned 1989 * by the family object and must not be modified or freed. 1990 */ 1991 extern(C) const(char)* function(PangoFontFamily* family) getName; 1992 /** 1993 * 1994 * Params: 1995 * family = a `PangoFontFamily` 1996 * Returns: %TRUE if the family is monospace. 1997 */ 1998 extern(C) int function(PangoFontFamily* family) isMonospace; 1999 /** 2000 * 2001 * Params: 2002 * family = a `PangoFontFamily` 2003 * Returns: %TRUE if the family is variable 2004 */ 2005 extern(C) int function(PangoFontFamily* family) isVariable; 2006 /** 2007 * 2008 * Params: 2009 * family = a `PangoFontFamily` 2010 * name = the name of a face. If the name is %NULL, 2011 * the family's default face (fontconfig calls it "Regular") 2012 * will be returned. 2013 * Returns: the `PangoFontFace`, 2014 * or %NULL if no face with the given name exists. 2015 */ 2016 extern(C) PangoFontFace* function(PangoFontFamily* family, const(char)* name) getFace; 2017 /** */ 2018 extern(C) void function() PangoReserved2; 2019 } 2020 2021 struct PangoFontMap 2022 { 2023 GObject parentInstance; 2024 } 2025 2026 /** 2027 * The `PangoFontMapClass` structure holds the virtual functions for 2028 * a particular `PangoFontMap` implementation. 2029 */ 2030 struct PangoFontMapClass 2031 { 2032 /** 2033 * parent `GObjectClass` 2034 */ 2035 GObjectClass parentClass; 2036 /** 2037 * 2038 * Params: 2039 * fontmap = a `PangoFontMap` 2040 * context = the `PangoContext` the font will be used with 2041 * desc = a `PangoFontDescription` describing the font to load 2042 * Returns: the newly allocated `PangoFont` 2043 * loaded, or %NULL if no font matched. 2044 */ 2045 extern(C) PangoFont* function(PangoFontMap* fontmap, PangoContext* context, PangoFontDescription* desc) loadFont; 2046 /** */ 2047 extern(C) void function(PangoFontMap* fontmap, PangoFontFamily*** families, int* nFamilies) listFamilies; 2048 /** 2049 * 2050 * Params: 2051 * fontmap = a `PangoFontMap` 2052 * context = the `PangoContext` the font will be used with 2053 * desc = a `PangoFontDescription` describing the font to load 2054 * language = a `PangoLanguage` the fonts will be used for 2055 * Returns: the newly allocated 2056 * `PangoFontset` loaded, or %NULL if no font matched. 2057 */ 2058 extern(C) PangoFontset* function(PangoFontMap* fontmap, PangoContext* context, PangoFontDescription* desc, PangoLanguage* language) loadFontset; 2059 /** 2060 * the type of rendering-system-dependent engines that 2061 * can handle fonts of this fonts loaded with this fontmap. 2062 */ 2063 const(char)* shapeEngineType; 2064 /** 2065 * 2066 * Params: 2067 * fontmap = a `PangoFontMap` 2068 * Returns: The current serial number of @fontmap. 2069 */ 2070 extern(C) uint function(PangoFontMap* fontmap) getSerial; 2071 /** */ 2072 extern(C) void function(PangoFontMap* fontmap) changed; 2073 /** 2074 * 2075 * Params: 2076 * fontmap = a `PangoFontMap` 2077 * name = a family name 2078 * Returns: the `PangoFontFamily` 2079 */ 2080 extern(C) PangoFontFamily* function(PangoFontMap* fontmap, const(char)* name) getFamily; 2081 /** */ 2082 extern(C) PangoFontFace* function(PangoFontMap* fontmap, PangoFont* font) getFace; 2083 } 2084 2085 struct PangoFontMetrics 2086 { 2087 uint refCount; 2088 int ascent; 2089 int descent; 2090 int height; 2091 int approximateCharWidth; 2092 int approximateDigitWidth; 2093 int underlinePosition; 2094 int underlineThickness; 2095 int strikethroughPosition; 2096 int strikethroughThickness; 2097 } 2098 2099 struct PangoFontset 2100 { 2101 GObject parentInstance; 2102 } 2103 2104 /** 2105 * The `PangoFontsetClass` structure holds the virtual functions for 2106 * a particular `PangoFontset` implementation. 2107 */ 2108 struct PangoFontsetClass 2109 { 2110 /** 2111 * parent `GObjectClass` 2112 */ 2113 GObjectClass parentClass; 2114 /** 2115 * 2116 * Params: 2117 * fontset = a `PangoFontset` 2118 * wc = a Unicode character 2119 * Returns: a `PangoFont` 2120 */ 2121 extern(C) PangoFont* function(PangoFontset* fontset, uint wc) getFont; 2122 /** 2123 * 2124 * Params: 2125 * fontset = a `PangoFontset` 2126 * Returns: a `PangoFontMetrics` object 2127 */ 2128 extern(C) PangoFontMetrics* function(PangoFontset* fontset) getMetrics; 2129 /** */ 2130 extern(C) PangoLanguage* function(PangoFontset* fontset) getLanguage; 2131 /** */ 2132 extern(C) void function(PangoFontset* fontset, PangoFontsetForeachFunc func, void* data) foreach_; 2133 /** */ 2134 extern(C) void function() PangoReserved1; 2135 /** */ 2136 extern(C) void function() PangoReserved2; 2137 /** */ 2138 extern(C) void function() PangoReserved3; 2139 /** */ 2140 extern(C) void function() PangoReserved4; 2141 } 2142 2143 struct PangoFontsetSimple; 2144 2145 struct PangoFontsetSimpleClass; 2146 2147 /** 2148 * The `PangoGlyphGeometry` structure contains width and positioning 2149 * information for a single glyph. 2150 * 2151 * Note that @width is not guaranteed to be the same as the glyph 2152 * extents. Kerning and other positioning applied during shaping will 2153 * affect both the @width and the @x_offset for the glyphs in the 2154 * glyph string that results from shaping. 2155 * 2156 * The information in this struct is intended for rendering the glyphs, 2157 * as follows: 2158 * 2159 * 1. Assume the current point is (x, y) 2160 * 2. Render the current glyph at (x + x_offset, y + y_offset), 2161 * 3. Advance the current point to (x + width, y) 2162 * 4. Render the next glyph 2163 */ 2164 struct PangoGlyphGeometry 2165 { 2166 /** 2167 * the logical width to use for the the character. 2168 */ 2169 PangoGlyphUnit width; 2170 /** 2171 * horizontal offset from nominal character position. 2172 */ 2173 PangoGlyphUnit xOffset; 2174 /** 2175 * vertical offset from nominal character position. 2176 */ 2177 PangoGlyphUnit yOffset; 2178 } 2179 2180 /** 2181 * A `PangoGlyphInfo` structure represents a single glyph with 2182 * positioning information and visual attributes. 2183 */ 2184 struct PangoGlyphInfo 2185 { 2186 /** 2187 * the glyph itself. 2188 */ 2189 PangoGlyph glyph; 2190 /** 2191 * the positional information about the glyph. 2192 */ 2193 PangoGlyphGeometry geometry; 2194 /** 2195 * the visual attributes of the glyph. 2196 */ 2197 PangoGlyphVisAttr attr; 2198 } 2199 2200 struct PangoGlyphItem 2201 { 2202 /** 2203 * corresponding `PangoItem` 2204 */ 2205 PangoItem* item; 2206 /** 2207 * corresponding `PangoGlyphString` 2208 */ 2209 PangoGlyphString* glyphs; 2210 /** 2211 * shift of the baseline, relative to the baseline 2212 * of the containing line. Positive values shift upwards 2213 */ 2214 int yOffset; 2215 /** 2216 * horizontal displacement to apply before the 2217 * glyph item. Positive values shift right 2218 */ 2219 int startXOffset; 2220 /** 2221 * horizontal displacement to apply after th 2222 * glyph item. Positive values shift right 2223 */ 2224 int endXOffset; 2225 } 2226 2227 struct PangoGlyphItemIter 2228 { 2229 PangoGlyphItem* glyphItem; 2230 const(char)* text; 2231 int startGlyph; 2232 int startIndex; 2233 int startChar; 2234 int endGlyph; 2235 int endIndex; 2236 int endChar; 2237 } 2238 2239 struct PangoGlyphString 2240 { 2241 /** 2242 * number of glyphs in this glyph string 2243 */ 2244 int numGlyphs; 2245 /** 2246 * array of glyph information 2247 */ 2248 PangoGlyphInfo* glyphs; 2249 /** 2250 * logical cluster info, indexed by the byte index 2251 * within the text corresponding to the glyph string 2252 */ 2253 int* logClusters; 2254 int space; 2255 } 2256 2257 /** 2258 * A `PangoGlyphVisAttr` structure communicates information between 2259 * the shaping and rendering phases. 2260 * 2261 * Currently, it contains cluster start and color information. 2262 * More attributes may be added in the future. 2263 * 2264 * Clusters are stored in visual order, within the cluster, glyphs 2265 * are always ordered in logical order, since visual order is meaningless; 2266 * that is, in Arabic text, accent glyphs follow the glyphs for the 2267 * base character. 2268 */ 2269 struct PangoGlyphVisAttr 2270 { 2271 import std.bitmanip: bitfields; 2272 mixin(bitfields!( 2273 uint, "isClusterStart", 1, 2274 uint, "isColor", 1, 2275 uint, "", 30 2276 )); 2277 } 2278 2279 struct PangoItem 2280 { 2281 /** 2282 * byte offset of the start of this item in text. 2283 */ 2284 int offset; 2285 /** 2286 * length of this item in bytes. 2287 */ 2288 int length; 2289 /** 2290 * number of Unicode characters in the item. 2291 */ 2292 int numChars; 2293 /** 2294 * analysis results for the item. 2295 */ 2296 PangoAnalysis analysis; 2297 } 2298 2299 struct PangoLanguage; 2300 2301 struct PangoLayout; 2302 2303 struct PangoLayoutClass; 2304 2305 struct PangoLayoutIter; 2306 2307 struct PangoLayoutLine 2308 { 2309 /** 2310 * the layout this line belongs to, might be %NULL 2311 */ 2312 PangoLayout* layout; 2313 /** 2314 * start of line as byte index into layout->text 2315 */ 2316 int startIndex; 2317 /** 2318 * length of line in bytes 2319 */ 2320 int length; 2321 /** 2322 * list of runs in the 2323 * line, from left to right 2324 */ 2325 GSList* runs; 2326 import std.bitmanip: bitfields; 2327 mixin(bitfields!( 2328 uint, "isParagraphStart", 1, 2329 uint, "resolvedDir", 3, 2330 uint, "", 28 2331 )); 2332 } 2333 2334 /** 2335 * The `PangoLogAttr` structure stores information about the attributes of a 2336 * single character. 2337 */ 2338 struct PangoLogAttr 2339 { 2340 import std.bitmanip: bitfields; 2341 mixin(bitfields!( 2342 uint, "isLineBreak", 1, 2343 uint, "isMandatoryBreak", 1, 2344 uint, "isCharBreak", 1, 2345 uint, "isWhite", 1, 2346 uint, "isCursorPosition", 1, 2347 uint, "isWordStart", 1, 2348 uint, "isWordEnd", 1, 2349 uint, "isSentenceBoundary", 1, 2350 uint, "isSentenceStart", 1, 2351 uint, "isSentenceEnd", 1, 2352 uint, "backspaceDeletesCharacter", 1, 2353 uint, "isExpandableSpace", 1, 2354 uint, "isWordBoundary", 1, 2355 uint, "breakInsertsHyphen", 1, 2356 uint, "breakRemovesPreceding", 1, 2357 uint, "reserved", 17 2358 )); 2359 } 2360 2361 struct PangoMatrix 2362 { 2363 /** 2364 * 1st component of the transformation matrix 2365 */ 2366 double xx; 2367 /** 2368 * 2nd component of the transformation matrix 2369 */ 2370 double xy; 2371 /** 2372 * 3rd component of the transformation matrix 2373 */ 2374 double yx; 2375 /** 2376 * 4th component of the transformation matrix 2377 */ 2378 double yy; 2379 /** 2380 * x translation 2381 */ 2382 double x0; 2383 /** 2384 * y translation 2385 */ 2386 double y0; 2387 } 2388 2389 /** 2390 * The `PangoRectangle` structure represents a rectangle. 2391 * 2392 * `PangoRectangle` is frequently used to represent the logical or ink 2393 * extents of a single glyph or section of text. (See, for instance, 2394 * [method@Pango.Font.get_glyph_extents].) 2395 */ 2396 struct PangoRectangle 2397 { 2398 /** 2399 * X coordinate of the left side of the rectangle. 2400 */ 2401 int x; 2402 /** 2403 * Y coordinate of the the top side of the rectangle. 2404 */ 2405 int y; 2406 /** 2407 * width of the rectangle. 2408 */ 2409 int width; 2410 /** 2411 * height of the rectangle. 2412 */ 2413 int height; 2414 } 2415 2416 struct PangoRenderer 2417 { 2418 GObject parentInstance; 2419 PangoUnderline underline; 2420 bool strikethrough; 2421 int activeCount; 2422 /** 2423 * the current transformation matrix for 2424 * the Renderer; may be %NULL, which should be treated the 2425 * same as the identity matrix. 2426 */ 2427 PangoMatrix* matrix; 2428 PangoRendererPrivate* priv; 2429 } 2430 2431 /** 2432 * Class structure for `PangoRenderer`. 2433 * 2434 * The following vfuncs take user space coordinates in Pango units 2435 * and have default implementations: 2436 * - draw_glyphs 2437 * - draw_rectangle 2438 * - draw_error_underline 2439 * - draw_shape 2440 * - draw_glyph_item 2441 * 2442 * The default draw_shape implementation draws nothing. 2443 * 2444 * The following vfuncs take device space coordinates as doubles 2445 * and must be implemented: 2446 * - draw_trapezoid 2447 * - draw_glyph 2448 * 2449 * Since: 1.8 2450 */ 2451 struct PangoRendererClass 2452 { 2453 GObjectClass parentClass; 2454 /** */ 2455 extern(C) void function(PangoRenderer* renderer, PangoFont* font, PangoGlyphString* glyphs, int x, int y) drawGlyphs; 2456 /** */ 2457 extern(C) void function(PangoRenderer* renderer, PangoRenderPart part, int x, int y, int width, int height) drawRectangle; 2458 /** */ 2459 extern(C) void function(PangoRenderer* renderer, int x, int y, int width, int height) drawErrorUnderline; 2460 /** */ 2461 extern(C) void function(PangoRenderer* renderer, PangoAttrShape* attr, int x, int y) drawShape; 2462 /** */ 2463 extern(C) void function(PangoRenderer* renderer, PangoRenderPart part, double y1, double x11, double x21, double y2, double x12, double x22) drawTrapezoid; 2464 /** */ 2465 extern(C) void function(PangoRenderer* renderer, PangoFont* font, PangoGlyph glyph, double x, double y) drawGlyph; 2466 /** */ 2467 extern(C) void function(PangoRenderer* renderer, PangoRenderPart part) partChanged; 2468 /** */ 2469 extern(C) void function(PangoRenderer* renderer) begin; 2470 /** */ 2471 extern(C) void function(PangoRenderer* renderer) end; 2472 /** */ 2473 extern(C) void function(PangoRenderer* renderer, PangoLayoutRun* run) prepareRun; 2474 /** */ 2475 extern(C) void function(PangoRenderer* renderer, const(char)* text, PangoGlyphItem* glyphItem, int x, int y) drawGlyphItem; 2476 /** */ 2477 extern(C) void function() PangoReserved2; 2478 /** */ 2479 extern(C) void function() PangoReserved3; 2480 /** */ 2481 extern(C) void function() PangoReserved4; 2482 } 2483 2484 struct PangoRendererPrivate; 2485 2486 struct PangoScriptIter; 2487 2488 struct PangoTabArray; 2489 2490 struct PangoCairoFontMap; 2491 2492 /** 2493 * Type of a function that can duplicate user data for an attribute. 2494 * 2495 * Params: 2496 * userData = user data to copy 2497 * 2498 * Returns: new copy of @user_data. 2499 */ 2500 public alias extern(C) void* function(void* userData) PangoAttrDataCopyFunc; 2501 2502 /** 2503 * Type of a function filtering a list of attributes. 2504 * 2505 * Params: 2506 * attribute = a Pango attribute 2507 * userData = user data passed to the function 2508 * 2509 * Returns: %TRUE if the attribute should be selected for 2510 * filtering, %FALSE otherwise. 2511 */ 2512 public alias extern(C) int function(PangoAttribute* attribute, void* userData) PangoAttrFilterFunc; 2513 2514 /** 2515 * Callback used when enumerating fonts in a fontset. 2516 * 2517 * See [method@Pango.Fontset.foreach]. 2518 * 2519 * Params: 2520 * fontset = a `PangoFontset` 2521 * font = a font from @fontset 2522 * userData = callback data 2523 * 2524 * Returns: if %TRUE, stop iteration and return immediately. 2525 * 2526 * Since: 1.4 2527 */ 2528 public alias extern(C) int function(PangoFontset* fontset, PangoFont* font, void* userData) PangoFontsetForeachFunc; 2529 2530 /** 2531 * Function type for rendering attributes of type %PANGO_ATTR_SHAPE 2532 * with Pango's Cairo renderer. 2533 * 2534 * Params: 2535 * cr = a Cairo context with current point set to where the shape should 2536 * be rendered 2537 * attr = the %PANGO_ATTR_SHAPE to render 2538 * doPath = whether only the shape path should be appended to current 2539 * path of @cr and no filling/stroking done. This will be set 2540 * to %TRUE when called from pango_cairo_layout_path() and 2541 * pango_cairo_layout_line_path() rendering functions. 2542 * data = user data passed to pango_cairo_context_set_shape_renderer() 2543 */ 2544 public alias extern(C) void function(cairo_t* cr, PangoAttrShape* attr, int doPath, void* data) PangoCairoShapeRendererFunc; 2545 2546 enum PANGO_SCALE_XX_SMALL = 0.5787037037037; /// The scale factor for three shrinking steps (1 / (1.2 * 1.2 * 1.2)). 2547 enum PANGO_SCALE_X_SMALL = 0.6444444444444; /// The scale factor for two shrinking steps (1 / (1.2 * 1.2)). 2548 enum PANGO_SCALE_SMALL = 0.8333333333333; /// The scale factor for one shrinking step (1 / 1.2). 2549 enum PANGO_SCALE_MEDIUM = 1.0; /// The scale factor for normal size (1.0). 2550 enum PANGO_SCALE_LARGE = 1.2; /// The scale factor for one magnification step (1.2) 2551 enum PANGO_SCALE_X_LARGE = 1.4399999999999; /// The scale factor for two magnification steps (1.2 * 1.2). 2552 enum PANGO_SCALE_XX_LARGE = 1.728; /// The scale factor for three magnification steps (1.2 * 1.2 * 1.2). 2553 2554 2555 /** 2556 * Whether the segment should be shifted to center around the baseline. 2557 * 2558 * This is mainly used in vertical writing directions. 2559 */ 2560 enum ANALYSIS_FLAG_CENTERED_BASELINE = 1; 2561 alias PANGO_ANALYSIS_FLAG_CENTERED_BASELINE = ANALYSIS_FLAG_CENTERED_BASELINE; 2562 2563 /** 2564 * Whether this run holds ellipsized text. 2565 */ 2566 enum ANALYSIS_FLAG_IS_ELLIPSIS = 2; 2567 alias PANGO_ANALYSIS_FLAG_IS_ELLIPSIS = ANALYSIS_FLAG_IS_ELLIPSIS; 2568 2569 /** 2570 * Whether to add a hyphen at the end of the run during shaping. 2571 */ 2572 enum ANALYSIS_FLAG_NEED_HYPHEN = 4; 2573 alias PANGO_ANALYSIS_FLAG_NEED_HYPHEN = ANALYSIS_FLAG_NEED_HYPHEN; 2574 2575 /** 2576 * Value for @start_index in `PangoAttribute` that indicates 2577 * the beginning of the text. 2578 */ 2579 enum ATTR_INDEX_FROM_TEXT_BEGINNING = 0; 2580 alias PANGO_ATTR_INDEX_FROM_TEXT_BEGINNING = ATTR_INDEX_FROM_TEXT_BEGINNING; 2581 2582 /** 2583 * Value for @end_index in `PangoAttribute` that indicates 2584 * the end of the text. 2585 */ 2586 enum ATTR_INDEX_TO_TEXT_END = 4294967295; 2587 alias PANGO_ATTR_INDEX_TO_TEXT_END = ATTR_INDEX_TO_TEXT_END; 2588 2589 /** 2590 * A `PangoGlyph` value that indicates a zero-width empty glpyh. 2591 * 2592 * This is useful for example in shaper modules, to use as the glyph for 2593 * various zero-width Unicode characters (those passing [func@is_zero_width]). 2594 */ 2595 enum GLYPH_EMPTY = 268435455; 2596 alias PANGO_GLYPH_EMPTY = GLYPH_EMPTY; 2597 2598 /** 2599 * A `PangoGlyph` value for invalid input. 2600 * 2601 * `PangoLayout` produces one such glyph per invalid input UTF-8 byte and such 2602 * a glyph is rendered as a crossed box. 2603 * 2604 * Note that this value is defined such that it has the %PANGO_GLYPH_UNKNOWN_FLAG 2605 * set. 2606 */ 2607 enum GLYPH_INVALID_INPUT = 4294967295; 2608 alias PANGO_GLYPH_INVALID_INPUT = GLYPH_INVALID_INPUT; 2609 2610 /** 2611 * Flag used in `PangoGlyph` to turn a `gunichar` value of a valid Unicode 2612 * character into an unknown-character glyph for that `gunichar`. 2613 * 2614 * Such unknown-character glyphs may be rendered as a 'hex box'. 2615 */ 2616 enum GLYPH_UNKNOWN_FLAG = 268435456; 2617 alias PANGO_GLYPH_UNKNOWN_FLAG = GLYPH_UNKNOWN_FLAG; 2618 2619 /** 2620 * The scale between dimensions used for Pango distances and device units. 2621 * 2622 * The definition of device units is dependent on the output device; it will 2623 * typically be pixels for a screen, and points for a printer. %PANGO_SCALE is 2624 * currently 1024, but this may be changed in the future. 2625 * 2626 * When setting font sizes, device units are always considered to be 2627 * points (as in "12 point font"), rather than pixels. 2628 */ 2629 enum SCALE = 1024; 2630 alias PANGO_SCALE = SCALE; 2631 2632 /** 2633 * The major component of the version of Pango available at compile-time. 2634 */ 2635 enum VERSION_MAJOR = 1; 2636 alias PANGO_VERSION_MAJOR = VERSION_MAJOR; 2637 2638 /** 2639 * The micro component of the version of Pango available at compile-time. 2640 */ 2641 enum VERSION_MICRO = 7; 2642 alias PANGO_VERSION_MICRO = VERSION_MICRO; 2643 2644 /** 2645 * The minor component of the version of Pango available at compile-time. 2646 */ 2647 enum VERSION_MINOR = 50; 2648 alias PANGO_VERSION_MINOR = VERSION_MINOR; 2649 2650 /** 2651 * A string literal containing the version of Pango available at compile-time. 2652 */ 2653 enum VERSION_STRING = "1.50.7"; 2654 alias PANGO_VERSION_STRING = VERSION_STRING;